Okta+AWSのSAMLによるフェデレーションで複数のIAMロールを使う方法
前回の記事でOktaのSAML2.0を使ったAWSコンソールへのフェデレーションを紹介しました。記事中ではOktaのユーザーに1つのIAMロールを割り当てたのですが、複数のIAMロールを割り当てたときにどのような動きになるか試してみました。
AdministratorポリシーをつけたIAMロールの作成
IAMコンソール>ロール>ロールを作成を選びます。信頼されたエンティティはSAML2.0フェデレーション、SAMLプロパイダーに作成したものを指定し、「プログラムによるアクセスと AWS マネジメントコンソールによるアクセスを許可する」を選びます。ポリシーにはAdministratorAccessを割り当てました。ロール名はAdministratorAccess-Oktaとしました。
Oktaアプリケーションデータの更新
AWS Account FederationアプリのProvisioning>Integrationに設定したアクセスキーを使って、OktaはIAMロールの一覧を取得します。キーを設定したあとにIAMロールを作成した場合、Oktaに自動的に反映されません。
アプリケーションデータを更新し、最新のIAMロールを取得します。Okta管理コンソール>Applications>More>Refresh Application Dataを選択します。
IAMロールの割当て
AWS Account FederationアプリのAssignmentsからユーザーの編集を行います。
作成しておいたAdministratorAccess-Oktaロールが確認できます。AdministratorAccess-Oktaを有効にし、セーブします。
フェデレーションを行う
Okta一般ユーザーのコンソールからフェデレーションしてみます。マイアプリからフェデレーションアプリを選びます。
どのIAMロールを使うのか選択する画面になります。IAMロールを選択してサインすると、AWSコンソールが表示されます。
まとめ
Oktaの1ユーザーにIAMロールを2つ割り当ててみました。ユーザーがフェデレーションする際にどのIAMロールにフェデレーションするか選択する形になることを確認しました。実運用する際は、フェデレーションアプリをAWSアカウントごとに作りつつ、ReadOnly権限、変更権限、Admin権限のように複数のIAMロールを作成し、ユーザーの役割ごとにロールを割り当てるといいと思います。